package backend.paging;

import java.util.ArrayList;
import java.util.List;

public class Paging<T>
{
	public int getPages(int listSize,int pageSize)
	{
		int pages = listSize/pageSize ;
		if((listSize%pageSize ) > 0)
		{
			pages = pages + 1;
		}
		return pages ;
	}
	public Paging()
	{
		
	}
	public List <String> getPageHtml(int currentPage, int pageSize, int listSize)
	{
		List <String> pages = new ArrayList<String>();
		int totalPage = getPages(listSize,pageSize); 
		int i = 0;
		if(totalPage == 1)
		{
			return pages ;
		}
		if(totalPage <= 10)
		{
			for(i=1;i<=totalPage;i++)
			{
				pages.add(new Integer(i).toString());
			}
			return pages;
		}
		else
		{
			if(currentPage == 1)
			{
				for(i=1;i<=10;i++)
				{
					pages.add(new Integer(i).toString());
				}
				pages.add("Next");
				return pages;
			}
			else if(currentPage == listSize)
			{
				pages.add("Previous");
				for(i=listSize;i>(listSize-10);i--)
				{
					pages.add(new Integer(listSize + 1 -i).toString());
				}
				return pages;
			}
			else
			{
				pages.add("Previous");
				//int count = 0;
				for(i=(currentPage-5);i<(currentPage+5);i++)
				{
					if(i>0 && i< listSize)
					{
						pages.add(new Integer(i).toString());
					}
					
				}
				pages.add("Next");
				return pages;
			}
		}
	}
	public int getStart(int pageSize,int p)
	{
		int start = ((p-1)*pageSize) ;
		return start ;
	}
	public int getEnd(int pageSize,int p)
	{
		int end = (p * pageSize)   ;
		return end ;
	}
	public List<T> getPageList(int pageSize,List<T> mainLst,int p)
	{
		int listSize = mainLst.size();
		List<T> subLst = new ArrayList<T>();
		int start = ((p-1)*pageSize) ;
		int end = (p * pageSize)   ;
		if(!(start > (listSize-1) ))
		{
			if(end > listSize)
			{
				end = listSize ;
			}
				subLst = mainLst.subList(start, end);
			
		}
		return subLst;
	}
}
